package com.jar.exercise.集合和数据结构.Collections类;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

/**
 * 集合工具类的使用
 */
public class CollectionsDemo {
	/**
	 * sort(Collection)方法的使用(含义：对集合进行排序)。
	 */
	@Test
	public void test1() {
		List<String> c = new ArrayList<>();
		c.add("l");
		c.add("o");
		c.add("v");
		c.add("e");
		System.out.println(c);
		Collections.sort(c);
		System.out.println(c);
	}

	/**
	 * shuffle(Collection)方法的使用(含义：对集合进行随机排序)。
	 */
	@Test
	public void test2() {
		List<String> c = new ArrayList<String>();
		c.add("l");
		c.add("o");
		c.add("v");
		c.add("e");
		System.out.println(c);
		Collections.shuffle(c);
		System.out.println(c);
		Collections.shuffle(c);
		System.out.println(c);
	}

	/**
	 * binarySearch(Collection,Object)方法的使用(含义：查找指定集合中的元素，返回所查找元素的索引)。
	 */
	@Test
	public void test3() {
		List<String> c = new ArrayList<>();
		c.add("l");
		c.add("o");
		c.add("v");
		c.add("e");
		System.out.println(c);
		int m = Collections.binarySearch(c, "o");
		System.out.println(m);
	}

	/**
	 * replaceAll(List list,Object old,Object new)
	 * 方法的使用(含义：替换批定元素为某元素,若要替换的值存在刚返回true,反之返回false)。
	 */
	@Test
	public void test4() {
		List<String> list = Arrays.asList("one two three four five six siven".split(" "));
		System.out.println(list);
		List<String> subList = Arrays.asList("three four five six".split(" "));
		System.out.println(Collections.replaceAll(list, "siven", "siven eight"));
		System.out.println(list);
	}

	/**
	 * reverse()方法的使用(含义：反转集合中元素的顺序)。
	 */
	@Test
	public void test5() {
		List list = Arrays.asList("one two three four five six siven".split(" "));
		System.out.println(list);
		Collections.reverse(list);
		System.out.println(list);
	}

	/**
	 * rotate(List list,int m)方法的使用(含义：集合中的元素向后移m个位置，在后面被遮盖的元素循环到前面来)。
	 */
	@Test
	public void test6() {
		List<String> list = Arrays.asList("one two three four five six siven".split(" "));
		System.out.println(list);
		Collections.rotate(list, 2);
		System.out.println(list);
	}

	/**
	 * copy(List m,List n)方法的使用(含义：将集合n中的元素全部复制到m中,并且覆盖相应索引的元素)
	 */
	@Test
	public void test7() {
		List<String> m = Arrays.asList("one two three four five six siven".split(" "));
		System.out.println(m);
		List<String> n = Arrays.asList("我 是 复制过来的哈".split(" "));
		System.out.println(n);
		Collections.copy(m, n);
		System.out.println(m);
	}

	/**
	 * fill(List list,Object o)方法的使用(含义：用对象o替换集合list中的所有元素)。
	 */
	@Test
	public void test8() {
		List m = Arrays.asList("one two three four five six siven".split(" "));
		System.out.println(m);
		Collections.fill(m, "啊啊啊");
		System.out.println(m);
	}
}
